/**
 * 三角函数定义
 * sin 对边/斜边
 * cos 邻边/斜边
 *
 * Math.cos(弧度) Math.sin(弧度) 注意函数接收的是弧度 而非角度
 * 用r表示半径 ，a表示所对应的角度 。那么弧度指角a所对圆的弧曲线这一块，假如说这个曲线它等于半径(r)的话，如果把这个曲线给拉直了，拉直之后，它就等于半径，那么我们就把a这个角度叫做一弧度。所以说一弧度的概念，它其实就是这个角对应的曲线，它的长度如果等于半径(r)，就是一弧度。
 * 1弧度 = 半径r,   一整个圆的周长 = 2πr,   所以整圆的弧度 = 2π, 整圆一圈占多少角度呢? 360度,  所以360度跟2π是一个等量关系, 只不过单位不同
 * 所以可以得到这样一个公式: 360度 = 2π(弧度)  进一步可以得出  1度 = 2π/360(用弧度表示1度) 及 π/180  ||  1弧度 = 360/2π(用度表示弧度) 及 180/π
 * 由以上信息  在js中 sin30度  可以这样表示  Math.sin(30 * Math.PI / 180)
 * 相关解释详见https://zhuanlan.zhihu.com/p/103033370
 *
 * 画圆弧
 * context.arc(x,y,radius,startAngle,endAngle,anticlockwise)
 * 前面三个参数，分别是圆心坐标与圆半径。startAngle、endAngle使用的是弧度值，不是角度值。 弧度的规定是绝对的。anticlockwise表示绘制的方法，是顺时针还是逆时针绘制。它传入布尔值，true表示逆时针绘制，false表示顺时针绘制，缺省值为false。
 *
 */


// 获取sin cos三角函数
export function getSinCos(math,deg){
 let map = {
   cos:(deg) => Math.cos(getDeg(deg)),
   sin:(deg) => Math.sin(getDeg(deg))
 }
 let fn = map[math] || (()=>{})
 return fn(deg)
}

// 获取弧度
export function getDeg(deg){
 return deg* Math.PI/180
}

// 两点之间的中心点
export function getCenter(point1,point2){
 return {
   x: (point1.x + point2.x)/2,
   y: (point1.y + point2.y)/2
 }
}

// 随机数
export function rdmNum(num) {
 return Math.random() * num;
}

// 随机颜色
export function rdmColor() {
 let r,g,b
 r = rdmNum(255)
 g = rdmNum(255)
 b = rdmNum(255)
 return `rgba(${r},${g},${b},${rdmNum(1)+.5})`
}
// 节流函数
export function deb(fn, delay) {
  let timeId;
  return function () {
    let args = arguments;
    let context = this;
    if (!timeId) {
      timeId = setTimeout(function () {
        timeId = null;
        fn.apply(context, args);
      }, delay);
    }
  };
}
// 获取音频时间
export function getAudioTime(time) {
  let mini = parseInt(time / 60)
    .toString()
    .padStart(2, "0");
  let sec = parseInt(time % 60)
    .toString()
    .padStart(2, "0");
  return mini + " : " + sec;
}